import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import path from "path";

// 配置时注意vite版本，不同版本有效配置项不同
export default defineConfig(({ command, mode }) => {
  const isSSRBuild = command === "build" && mode === "ssr";
  return {
    plugins: [
      vue({
        template: {
          compilerOptions: {
            whitespace: "condense",
          },
        },
      }),
    ],
    resolve: {
      alias: {
        "@": "/src",
      },
    },
    build: {
      outDir: isSSRBuild ? "dist/server" : "dist/client",
      // SSR构建时需要关闭清空目录
      emptyOutDir: !isSSRBuild,

      // 必须显式声明SSR入口（重要！）
      ssr: isSSRBuild ? "src/server.js" : undefined,
      // SSR构建时需要设置目标为node

      rollupOptions: {
        // 客户端构建需要指定输入文件
        input: path.resolve(__dirname, "index.html"),
      },
    },

    ssr: {
      // 其他 SSR 配置
      target: "node",
      format: "esm",
      noExternal: isSSRBuild ? true : [],
    },
  };
});
